
# Copyright 2005-2012 Daniel James.
# Distributed under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

import testing ;

project hash-tests
    : requirements
        <warnings>pedantic
        <toolset>intel:<warnings>on
        <toolset>gcc:<cxxflags>"-Wstrict-aliasing -Wsign-promo -Wunused-parameter -Wconversion -Wfloat-equal -Wshadow"
        <toolset>darwin:<cxxflags>"-Wstrict-aliasing -Wsign-promo -Wunused-parameter -Wconversion -Wfloat-equal -Wshadow"
        <toolset>clang:<cxxflags>"-Wstrict-aliasing -Wsign-promo -Wunused-parameter -Wsign-conversion -Wconversion -Wfloat-equal -Wshadow"
        <toolset>msvc:<warnings-as-errors>on
        <toolset>gcc:<warnings-as-errors>on
        <toolset>clang:<warnings-as-errors>on
    ;

test-suite container_hash/hash
    :
        [ run hash_info.cpp : : : <test-info>always_show_run_output ]
        [ compile check_float_funcs.cpp ]
        [ run hash_fwd_test_1.cpp ]
        [ run hash_fwd_test_2.cpp ]
        [ run hash_number_test.cpp ]
        [ run hash_enum_test.cpp ]
        [ run hash_pointer_test.cpp ]
        [ run hash_function_pointer_test.cpp ]
        [ run hash_float_test.cpp ]
        [ run hash_long_double_test.cpp ]
        [ run hash_string_test.cpp ]
        [ run hash_range_test.cpp ]
        [ run hash_custom_test.cpp ]
        [ run hash_global_namespace_test.cpp ]
        [ run hash_friend_test.cpp ]
        [ run hash_built_in_array_test.cpp ]
        [ run hash_value_array_test.cpp ]
        [ run hash_vector_test.cpp ]
        [ run hash_list_test.cpp ]
        [ run hash_deque_test.cpp ]
        [ run hash_set_test.cpp ]
        [ run hash_map_test.cpp ]
        [ run hash_complex_test.cpp ]
        [ run hash_optional_test.cpp ]
        [ run hash_variant_test.cpp ]
        [ run hash_type_index_test.cpp ]
        [ run hash_system_error_test.cpp ]
        [ run hash_std_array_test.cpp ]
        [ run hash_std_tuple_test.cpp ]
        [ run hash_std_smart_ptr_test.cpp ]
        [ run link_test.cpp link_test_2.cpp ]
        [ run link_ext_test.cpp link_no_ext_test.cpp ]
        [ run extensions_hpp_test.cpp ]
        [ compile-fail hash_no_ext_fail_test.cpp ]
        [ compile-fail namespace_fail_test.cpp ]
        [ run implicit_test.cpp ]
        [ run hash_no_ext_macro_1.cpp ]
        [ run hash_no_ext_macro_2.cpp ]
    ;

test-suite container_hash/hash_no_ext
    :
        [ run hash_number_test.cpp : : : <define>BOOST_HASH_NO_EXTENSIONS : no_ext_number_test ]
        [ run hash_pointer_test.cpp : : : <define>BOOST_HASH_NO_EXTENSIONS : no_ext_pointer_test ]
        [ run hash_function_pointer_test.cpp : : : <define>BOOST_HASH_NO_EXTENSIONS : no_ext_function_pointer_test ]
        [ run hash_float_test.cpp : : : <define>BOOST_HASH_NO_EXTENSIONS : no_ext_float_test ]
        [ run hash_long_double_test.cpp : : : <define>BOOST_HASH_NO_EXTENSIONS : no_ext_long_double_test ]
        [ run hash_string_test.cpp : : : <define>BOOST_HASH_NO_EXTENSIONS : no_ext_string_test ]
        [ run link_test.cpp link_test_2.cpp : : : <define>BOOST_HASH_NO_EXTENSIONS : no_ext_link_test ]
    ;

# Tests to see if the floating point hash is using the binary hash.
# Not run normally because on some platforms these should fail.
test-suite container_hash/hash_no_generic_float
    :
        [ run hash_float_test.cpp
            : : : <define>BOOST_HASH_DETAIL_TEST_WITHOUT_GENERIC
            : hash_float_test_no_generic ]
        [ run hash_long_double_test.cpp
            : : : <define>BOOST_HASH_DETAIL_TEST_WITHOUT_GENERIC
            : hash_long_double_test_no_generic ]
    ;
explicit container_hash/hash_no_generic_float ;

build-project ../examples ;

run hash_reference_values.cpp ;
